﻿import { app, ipcMain, BrowserWindow, desktopCapturer } from 'electron'
let ipc = ipcMain //数据传输
global.winObj = new Map()
global.vb = {}
import path from "path"
import { port } from "./http/port"
import { MyHttp } from "./http/http"
import { win } from "./win/win"
import { trays } from "./tray/tray"
import { eleupdata } from "./updata/updata"
app.once('ready', async () => {
    //获取随机一个未使用的端口
    let dk = await port()
    console.log("port:", dk); 
    //打开http服务
    MyHttp(dk)
    eleupdata()
    let url = "",preload=""
    //判断开发还是生产模式
    if (app.isPackaged) {
        url = "file://" + path.join(__dirname, './index.html') //file文档模式
        // url = `http://127.0.0.1:` + dk + '/' //http端口模式
        preload =path.join(__dirname, './preload.js') 
    } else {
        url = 'http://127.0.0.1:3000'
        preload =path.join(__dirname, '../electron/preload/preload.js')
        // url = 'https://w3cjs.cn'
    }
    //配置文档
    vb = {
        autoHideMenuBar:false,//显示菜单
        webPreferences: {
            preload: preload,//preload 模式方便preload中使用node模块，而渲染进程不使用！
            contextIsolation: true, //开启上下文隔离
            nodeIntegration: false,//关闭node模块
            nodeIntegrationInWorker: false,//关闭nodeWorker
            devTools: true, //控制开发模式
        }
    }
    //生成窗口
    win("001", url)
    //开启托盘
    trays("视频协议")

})
ipc.handle("rtc", async (event, data) => {
    let ret = await desktopCapturer
        .getSources({
            types: ["screen", "window"], // 设定需要捕获的是"屏幕"，还是"窗口"
            thumbnailSize: {
                height: 300, // 窗口或屏幕的截图快照高度
                width: 300, // 窗口或屏幕的截图快照宽度
            },
            fetchWindowIcons: true, // 如果视频源是窗口且有图标，则设置该值可以捕获到的窗口图标
        })
    if (ret) return ret
    return false
})
let openDevToolsT = true
ipc.on("message", async (e, res) => {
    // vlog.info("收到消息", res)
    //物理窗口尺寸
    switch (res.type) {
        case "window-hide": //窗口隐藏
            winObj.get("001").hide()
            break;
        case "window-show": //窗口显示
            winObj.get("001").show()
            break;
        case "window-close": //关闭全部应用
            app.quit()
            break;
        case "funcKey"://打开控制台
            win.webContents.openDevTools({
                activate: !openDevToolsT
            });
            break;
        default:
            break;//oneMsgErr
    }
})